package com.orz.dao;

import java.util.List;

import org.hibernate.Hibernate;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import com.orz.interfaces.SimpleDaoInterface;

/**
 * 
 * @author Administrator 简单的使用Spring封装好的hibernate部分
 *  进行操作,其中使用QBC的方式为主
 *         其中传入的Object都约定成已经映射好 2009年3月4日
 */
public class SimpleDao extends HibernateDaoSupport
						implements SimpleDaoInterface<Object> {
	/**.
	 *  进行QBC的新增操作,只要传入一个已经映射好的JavaBean,就可以进行保存
	 * 
	 * @param entity
	 *            用于保存的对象
	 * @return 返回保存后的对象,会更新主键
	 */
	public final Object addObject(final Object entity) {
		System.out.println("尝试添加对象");
		getHibernateTemplate().save(entity);
		return entity;
	}

	/**.
	 *  删除指定对象
	 * 
	 * @param entity
	 *            要删除的对象,最好是带主键,否则可能出现对个删除
	 */
	public final void delObject(final Object entity) {
		getHibernateTemplate().delete(entity);
	}

	/**
	 * . 更新指定的对象,建议预先查询好带主键
	 * 
	 * @param entity
	 *            要更新的对象
	 */
	public final void updateObject(final Object entity) {
		getHibernateTemplate().update(entity);
	}

	/**
	 * . 传入一个空对象,则会根据JavaBean对象所对应的表,查询出所有内容
	 *   不过需要注意,对只有主键的查询条件,也会认为是空对象进行查询
	 * 
	 * @param entity
	 *            传入的映射好的JavaBean
	 * @return 查询的结果
	 */
	@SuppressWarnings("unchecked")
	public final List<Object> getObjects(final Object entity) {
		return getHibernateTemplate().findByExample(entity);
	}

}
